package mainCNN;

import java.util.ArrayList;

import util.Constantes;
import util.PadraoTreinamento;
import util.Util;

public class MainCNN {
	public static void main(String[] args) {
	
		RecursiveCNN rCNN = new RecursiveCNN();
		ArrayList<PadraoTreinamento> arrayRecursivoFinal = null;
		
		String[] nomeDiretorio = new String[7]; 
		nomeDiretorio[0] = "breastcancer/";
		nomeDiretorio[1] = "diabetes/";
		nomeDiretorio[2] = "glass/";
		nomeDiretorio[3] = "heart/";
		nomeDiretorio[4] = "iris/";
		nomeDiretorio[5] = "liver/";
		nomeDiretorio[6] = "sintetica/";
		
		String[] nomeSufixo = new String[7]; 
		nomeSufixo[0] = "WBC";
		nomeSufixo[1] = "DBT";
		nomeSufixo[2] = "GLS";
		nomeSufixo[3] = "HRT";
		nomeSufixo[4] = "IRS";
		nomeSufixo[5] = "LVR";
		nomeSufixo[6] = "SYNTH";
		
		String[] nomeArquivoTreino = new String[7]; 
		nomeArquivoTreino[0] = "WINSCONSIN_BREAST_CANCER";
		nomeArquivoTreino[1] = "DIABETES";
		nomeArquivoTreino[2] = "GLASS";
		nomeArquivoTreino[3] = "HEART";
		nomeArquivoTreino[4] = "IRIS";
		nomeArquivoTreino[5] = "LIVER";
		nomeArquivoTreino[6] = "SINTETICA";

		for(int x = 0; x < 7; x++) {
			long a = System.currentTimeMillis();
			for (int i = 0; i < 10; i++) {
				ArrayList<PadraoTreinamento> padroesTreinamento = Util.getTrainingData(Constantes.NM_CAMINHO_DATASET+ nomeDiretorio[x] + nomeSufixo[x] + "_" + i);
				arrayRecursivoFinal = rCNN.recursive(padroesTreinamento, padroesTreinamento.size());
				
				System.out.println(nomeSufixo[x] + "_" + i);
				System.out.println("Tamanho original/final: ["+padroesTreinamento.size() + "/"+arrayRecursivoFinal.size()+"] = "+((double)arrayRecursivoFinal.size()/(double) (padroesTreinamento.size())));
					
				CNN condensedNearestNeighbour = new CNN(padroesTreinamento);
				ArrayList<PadraoTreinamento> arrayTeste = Util.getTrainingData(Constantes.NM_CAMINHO_DATASET + nomeDiretorio[x] + nomeArquivoTreino[x] + "_" +i);
				condensedNearestNeighbour.testar(arrayTeste, arrayRecursivoFinal);
			}
	
			long b= System.currentTimeMillis();
			long c = (b - a) / 1000;
			System.out.println("Segundos: " + c);
		}

	}

}
